package com.xiongjie.SingleLimit.algorithm;

/**
 * 限流接口，限流的核心是一个数据结构，包括一个时间戳和一个原子计数器
 * 单机版本时，该数据结构可以使用全局变量表示
 * 分布式版本时，该数据结构可以存储到redis或者infinispan等缓存中
 * <p>
 * 限流算法的本质是指定时间范围内的请求数量是否满足要求，最终的结果是返回1个true/false，然后我们再根据这个结果进行后续操作
 */
public interface Limiter {

    //是否超过限流
    boolean isOverLimit();

    //当前的流量值
    int currentQPS();

    //访问与否
    boolean visit();

}
